package com.yuexun.beilunpatient.ui.registration.model;

import com.yuexun.beilunpatient.base.BaseEntity;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentArrageBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentDepBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentDepData;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentDepInfoBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentDocBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentDocInfoBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentHistoryBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentHistoryDetailBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentHospitalBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentLoginBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentPatientDetail;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentPayBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentSubmitBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentTimeSlotBean;

import java.util.Map;

import rx.Observable;

/**
 * Created by chenss on 2018/10/18.
 */
public interface IRegistrationModel {

    //预约挂号会员登陆
    public Observable<BaseEntity<AppointmentLoginBean>> appointmentLogin(Map<String, String> praise);

    //预约挂号会员注册
    public Observable<BaseEntity<String>> appointmentRegister(Map<String, String> praise);

    //请求激活码
    public Observable<BaseEntity<String>> sendActiveCodeNoPassWord(Map<String, String> praise);

    //会员无密码激活
    public Observable<BaseEntity<String>> appointmentActivationNoPassword(Map<String, String> praise);

    //预约挂号获取所有或可预约的医院列表
    public Observable<BaseEntity<AppointmentHospitalBean>> appointmenthospitalList(Map<String, String> praise);

    //获取科室列表
    public Observable<BaseEntity<AppointmentDepData>> getAppointentDep(Map<String, String> praise);

    //获取科室列表SG0003中心科室
    public Observable<BaseEntity<AppointmentDepBean>> getAppointentDepCenter(Map<String, String> praise);

    //获取挂号医生列表
    public Observable<BaseEntity<AppointmentDocBean>> getAppointmentDocList(Map<String, String> praise);

    //获取医院科室简介
    public Observable<BaseEntity<AppointmentDepInfoBean>> getAppointmentDepinfo(Map<String, String> praise);

    //获取平台挂号排班信息
    public Observable<BaseEntity<AppointmentArrageBean>> getAppointmentArrageList(Map<String, String> praise);

    //获取医生详细信息
    public Observable<BaseEntity<AppointmentDocInfoBean>> getAppointmentDocInfo(Map<String, String> praise);

    //获取预约时间段
    public Observable<BaseEntity<AppointmentTimeSlotBean>> getAppointmentTimeSlot(Map<String, String> praise);

    //预约挂号
    public Observable<BaseEntity<AppointmentSubmitBean>> toAppointment(Map<String, String> praise);

    //查询已预约的记录
    public Observable<BaseEntity<AppointmentHistoryBean>> getAlreadyAppointmentList(Map<String, String> praise);

    //获取单个已预约记录的信息
    public Observable<BaseEntity<AppointmentHistoryDetailBean>> getAppointentDetail(Map<String, String> praise);

    //预约退号
    public Observable<BaseEntity<String>> cancelAppoinment(Map<String, String> praise);

    //开始预约费用的支付
    public Observable<BaseEntity<AppointmentPayBean>> toPayAppoinment(Map<String, String> praise);

    //获取病人详情
    public Observable<BaseEntity<AppointmentPatientDetail>> loadPatientInfoDetail(Map<String, String> praise);
}
